home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / PROGRAMM / DB_CLIPP / 0643B.ZIP / CHECKPR.ASM < prev    next >
Assembly Source File  |  1986-12-23  |  2KB  |  81 lines

  1. page 66,132
  2.  
  3.  
  4. CODESEG SEGMENT BYTE PUBLIC 'CODE'
  5.  
  6. CHECKPR PROC FAR
  7. ORG 00h
  8.         ASSUME CS:CODESEG
  9.  
  10. START:
  11.       jmp  begin
  12. Copyright db 13,'CHECKPR.BIN Beta version, Copyright (c) R. R. Freeland/Synergy Corp. 12/86',
  13.           db 13,10,'no rights reserved--Merry Christmas',26
  14.  
  15. begin:
  16.       cmp  byte ptr DS:[bx],'0'        ;first check that param is between 0-2
  17.       jb   wrong_param                 ;and jump to error routine if not
  18.       cmp  byte ptr DS:[bx],'2'
  19.       ja   wrong_param
  20.       xor  dx,dx
  21.       mov  dl,byte ptr DS:[bx]         ;move in param to dx (which printer)
  22.       sub  dl,30h                      ;change it to number
  23.       mov  ah,2                        ;service 2 of
  24.       int  17h                         ;int 17h (check printer status)
  25.       cmp  ah,90h                      ;not busy and selected=90h=10010000
  26.       je   OK                          ;if it matches return "O"(K)
  27.       cmp  ah,02                       ;I dunno, seems to give the right response
  28.       jz   invalid                     ;when no printer there
  29.       cmp  ah,0b8h                     ;offline?
  30.       jz   offline
  31.       cmp  ah,0b0h                     ;not connected?
  32.       jz   noconnect
  33.       test ah,00100000b                ;out of paper?
  34.       jnz  paperout
  35.       test ah,00010000b                ;not selected?
  36.       jz   noselect
  37.       test ah,00001000b                ;i/o error?
  38.       jnz  ioerror
  39.       mov  byte ptr DS:[bx],'U'        ;U=Unknown problem
  40.       jmp  done
  41.  
  42. wrong_param:
  43.       mov  byte ptr DS:[bx],'W'        ;W=wrong parameter
  44.       jmp  done
  45.  
  46. offline:
  47.       mov  byte ptr DS:[bx],'L'        ;L=offLine
  48.       jmp  done
  49.  
  50. noconnect:
  51.       mov  byte ptr DS:[bx],'C'        ;C=not Connected
  52.       jmp  done
  53.  
  54. invalid:
  55.       mov  byte ptr DS:[bx],'V'        ;V=inValid printer
  56.       jmp  done
  57.  
  58. paperout:
  59.       mov  byte ptr DS:[bx],'P'        ;P=paperout
  60.       jmp  done
  61.  
  62. ioerror:
  63.       mov  byte ptr DS:[bx],'I'        ;I=i/o error
  64.       jmp  done
  65.  
  66. noselect:
  67.       mov  byte ptr DS:[bx],'N'        ;N=not selected
  68.       jmp  done
  69.  
  70. OK:
  71.       mov  byte ptr DS:[bx],'O'        ;O=OK
  72.       jmp  done
  73.  
  74. done:
  75.       RET
  76.  
  77. CHECKPR ENDP
  78. CODESEG ENDS
  79. END START
  80.  
  81.